使用摄影制图法重现高野山奥之院墓园
日本知名的旅游景点高野山奥之院墓园,前来观光的游客终年络绎不绝。来自芬兰的虚拟现实公司Varjo,使用摄影制图法和动态光照,在虚拟现实中重现了高野山奥之院墓园。
摄影制图法
摄影制图法是通过使用多张真实物体或空间的照片,制作出数字资源的方法。摄影制图法不仅在游戏领域备受关注,在工业市场也逐渐获得重视。
目前,摄影制图法生成的点云已成为建筑,工程和施工(AEC)行业工作流程中不可或缺的一部分。在汽车,运输和制造行业中,通过摄影制图法采集实物原型,并把实物原型和数字CAD模型做对比,可以让虚拟物体符合现实物体的外观。
为了更好模拟现实环境,展示专业领域中摄影制图法的潜力,Varjo公司使用摄影制图法扫描了日本最大的墓园-高野山奥之院墓园,并在VR中通过数字孪生来展示该环境。
项目创作
通过使用下图的Varjo VR-1设备,可以首次在人眼分辨率的VR中,探索建筑,施工现场或其它地点的精致细节。
为了展示动态人眼分辨率VR设备对摄影制图法的潜力,Varjo公司通过扫描日本神圣的景点高野山的奥之院墓园,创作出动态的演示项目。
下面,我们将介绍该项目的一些制作过程。
选择摄影制图法采集位置
使用摄影制图法时,首先要选取合适的采集地点或目标物体,并不是所有地点或物体都适合使用摄影制图法采集。
我们不仅希望在演示项目可以看到大量细节,也想让作品具有重要文化意义,因此我们选择在日本高野山的古老墓园进行采集。由于这是户外采集工作,因此环境条件非常难以控制,极具挑战性。
此次采集工作中的主要挑战包括:
移动物体。高野山奥之院墓园非常庞大而古老,每天都有大批游客到此观光游览,在三脚架摆上照相机会引起人们的注意。
在进行摄影制图时,采集的场景应该是完全静态的,周围不应该有任何移动物体。采集大型场景时会遇到很多问题,即使物体本身不会发生移动,但作为光源的太阳却会移动。如果拍摄需要数小时的时间,阴影可能会发生变化。
天气。在进行户外采集时,最适合拍摄的天气是阴天。而且在采集过程之中或之前,都不可以下雨。潮湿表面和干燥表面有不同的外表,而在整个拍摄过程中,场景都应该是相同的样子。
地面。墓园的地面非常难以采集,因为它上面布满了树枝,会随路人行走而移动。
在拍摄摄影制图场景的照片时,基本规则是:每张照片都应该和相邻照片有至少30%以上的重叠部分。所以我们的主要目标是从尽可能多的角度拍摄目标的照片,使照片保持互相重叠。
在扫描高野山的采集区域时,我们使用了类似扫描房间的方法。对于下图的场景,大约拍摄了2500张左右的照片。
选择摄影制图法采集位置
摄影制图法提供了逼真的沉浸式效果,但其静态的光照会限制逼真的用例效果。
我们希望使用动态光照模拟出栩栩如生的环境。Unity提供了很好的平台来构建场景和渲染细节,并且可以轻松实现自动化工作流程。
我们主要使用了从摄影制图法生成的资产管线中删除纹理中的光照信息的工具De-Lighting tool插件,以及Asset Store资源商店的其它插件,这将帮助我们在需要时补缺。项目中的部分树木和石块来自Unity的《死者之书》环境资源。
在现场拍摄时,我们需要不断传输文件,从而节省3D构建的时间。首先,我们使用Reality Capture软件,创建照片组成的3D场景。
网格处理和UV
我们将3D场景从Reality Capture导出时,得到了一个具有1千万个多边形的网格和一套98 x 8k的纹理。
在Houdini中,网格要经过Voronoi Fracture功能的处理,将网格分割成更小,以便进行管理。然后通过相同UV生成不同的细节层级LOD,这是为了避免LOD切换时出现纹理未及时加载的问题。
这样处理后,纹理的大小适合在Unity中进行处理,我们也可以使用Umbra的遮蔽剔除效果。在网格部分变小后,生成UV的过程也会使用更少开销。
我们创建着色器来烘焙不同纹理。Unity的De-Lighting tool要求至少提供反照率贴图、环境遮蔽贴图、法线贴图、弯曲法线贴图和位置贴图。
大多数帧缓冲区可以直接烘焙,但弯曲法线的效果不够明显。幸运的是,弯曲法线表示丢失遮蔽光线的方向,我们使用了简单的VEX函数occlusion()来输出弯曲法线。
移除光照
我们创建了一个Python脚本,它会自动通过De-Lighting tool批量处理纹理。
如果扫描结果有很多颜色变化,De-Lighting tool会很难估算环境探针。因此,我们决定结合使用自动移除光照的方法和基于图像的传统光照阴影移除方法。
我们编写了Unity资源后期处理脚本,用于导入处理后的模型,它会处理材质创建和纹理分配的过程。我们一共对128个4K纹理进行了处理,烘焙和移除光照。
下面是处理前后的对比效果。
Varjo VR-1和Unity的轻松集成
导入场景后,我们只需把VarjoUser预制件拖入场景即可。场景可以使用Varjo VR-1设备来查看,我们可以开始根据需求进行调整。
我们使用Unity插件Enviro实现昼夜循环效果,并把实时全局光照烘焙到场景中。生成的网格UV用于全局光照,从而避免漫长的预处理时间。
这些设置让光照贴图只对UV进行少量处理,该效果可以通过在网格上启用UV优化功能并调整设置实现。
资源下载
De-Lighting tool:
https://assetstore.unity.com/packages/tools/utilities/de-lighting-tool-99583
Enviro - Sky and Weather:
https://assetstore.unity.com/packages/tools/particles-effects/enviro-sky-and-weather-33963
小结
非常感谢Varjo公司为Unity社区分享项目制作过程,他们将参加即将召开的Unite Copenhagen大会并进行该项目的展示。
下载Unity Connect APP,请点击此处。 观看部分Unity官方视频,请关注B站帐户:Unity官方。
点击[阅读原文]在Unity答疑专区留下你的问题,Unity社区和官方团队帮你解答:
Connect.unity.com/g/discussion
推荐阅读
在Unity 2019.2中扩展Shader Graph,实现自定义光照
官方活动
8月21日前加入Unity Connect,创建个人频道,成为与Unity社区同行的伙伴-Unity Buddy,享受专属福利。
Unity Connect评论区支持你认可的Buddy,有机会获得Buddy送出的Unity周边。
了解如何成为Unity Buddy,请点击此处。
喜欢本文,请点“在看”